package org.example.oop.in_class;

/**
 * org.example.oop.in_class
 *
 * @author moLei
 * @description 内部类
 * @since 2025/6/16
 */
public class Outer {

    private int id = 10;

    private static int idStatic = 20;
    public void out() {
        System.out.println("外部类方法");
    }

    /**
     * 成员内部类
     */
    class Inner {
        public void in() {
            System.out.println("内部类方法");
        }

        // 获取外部类的私有属性
        public void getOutId() {
            System.out.println(id);
        }
    }

    /**
     * 静态内部类
     */
    public static class InnerStatic {
        public void in() {
            System.out.println("静态内部类方法");
        }
        // 静态内部类无法访问外部类的非静态属性
        public void getOutId() {
            System.out.println(idStatic+"  静态外部属性");
        }
    }

    /**
     * 局部内部类
     */
    public void method() {
        class InnerMethod {
            public void in() {
                System.out.println("内部类方法");
            }
        }
    }
}
